// Storage封装
const STORAGE_KEY = 'mall'

export default {
    // 存储值
    setItem(key, value, module_name) {
        // 如果模块名称存在
        if (module_name) {
            let val = this.getItem(module_name);
            val[key] = value
            this.setItem(module_name, val)
        } else {
            let val = this.getStorage();
            val[key] = value;
            window.sessionStorage.setItem(STORAGE_KEY, JSON.stringify(val))
        }
    },
    //获取某一个模块下面的属性 
    // user就是一个模块，例如： 获取的是user下面的 userName
    getItem(key, module_name) {
        if (module_name) {
            let val = this.getItem(module_name);
            if (val) return val[key];
        }
        return this.getStorage()[key];
    },
    // 获取整个浏览器的缓存信息
    getStorage() {
        // 刚开始可能是空的，如果获取不到缓存信息，那么我们就给他一个空的对象
        return JSON.parse(window.sessionStorage.getItem(STORAGE_KEY) || '{}');
    },
    clear(key, module_name) {
        // 此时的val 就是整个storage的信息（可以有很多个模块）
        let val = this.getStorage();
        if (module_name) {
            if (!val[module_name]) return
            delete val[module_name][key]
        } else {
            delete val[key]
        }
        window.sessionStorage.setItem(STORAGE_KEY, JSON.stringify(val))

    }
}